// 1, 1, 2, 3, 5, 8,...
// 普通递归
function fn(n) {
  if(n < 2) return n
  return fn(n - 1) + fn(n - 2)
}

// 优化： 尾递归
function fib(n) {
  return fibAv(0, 1, n)
}
function fibAv(a, b, n) {
  if(n === 0) return a
  return fibAv(b, a + b, n - 1)
}